// 接口类型第一种: 对一个对象必须包含的属性和方法的描述
interface Person {
  name: string;
  age: number;
}
function printName(person: Person) {
  console.log(person.age);
}

const errPerson = { name: 'John' };
const john = { name: 'John', age: 21 };
const mary = { name: 'Mary', age: 21, phone: '123-45678' };

// 接口类型第二种: 接口就是一份合约。在这份合约里，我们可以定义实现这份合约的类或接口的行为
interface Comparable {
  compareTo(b): number;
}

class MyObject implements Comparable {
  age: number;
  compareTo(b): number {
    if (this.age === b.age) {
      return 0;
    }
    return this.age > b.age ? 1 : -1;
  }
}
